¾î¶² ÆÄÀÏ(exe, dll)ÀÇ ¹öÀüÀ» ÀÐ¾î ¿À±â À§Çؼ´Â 3°³ÀÇ ÇÔ¼ö¸¦ ¼ø¼´ë·Î »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
1. GetFileVersionInfoSize 2. GetFileVersionInfo 3. VerQueryValue
°á±¹ VerQueryValueÇÔ¼ö¸¦ È£Ãâ ÇÏ°í ³ÈÄ ¹öÀüÀ» ±¸ÇÒ¼ö ÀÖÁÒ... À§ 3°³ÀÇ APIÇÔ¼öµéÀº µµ¿ò¸»À» ÂüÁ¶ ÇϽðí
°£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î ºÃ½À´Ï´ç... Âü°í Çϼ¼¿ä...
ÆûÀ§¿¡ memo¿Í ¹öÆ°Çϳª ³õ¾Ò½À´Ï´Ù. µµ¿òÀÌ µÇ¾úÀ½ Çϳ׿ä...
±×·³ ÁñÇÁ...
procedure TForm1.Button1Click(Sender: TObject); var Size, Size2: DWord; Pt, Pt2: Pointer; begin Memo1.Lines.Clear; Size := GetFileVersionInfoSize ( PChar (ParamStr (0)), Size2); if Size > 0 then begin GetMem (Pt, Size); try GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt); // show the fixed information VerQueryValue (Pt, '\', Pt2, Size2); with TVSFixedFileInfo (Pt2^) do begin Memo1.Lines.Add ( 'Signature (should be invariably 0xFEEFO4BD): ' + IntToHex (dwSignature, 16)); Memo1.Lines.Add ('Major version number: ' + IntToStr (HiWord (dwFileVersionMS))); Memo1.Lines.Add ('Minor version number: ' + IntToStr (LoWord (dwFileVersionMS))); Memo1.Lines.Add ('Release version number: ' + IntToStr (HiWord (dwFileVersionLS))); Memo1.Lines.Add ('Build version number: ' + IntToStr (LoWord (dwFileVersionLS))); if (dwFileFlagsMask and dwFileFlags and VS_FF_DEBUG) <> 0 then Memo1.Lines.Add ('Debug info included'); if (dwFileFlagsMask and dwFileFlags and VS_FF_PRERELEASE) <> 0 then Memo1.Lines.Add ('Pre-release (beta) version'); if (dwFileFlagsMask and dwFileFlags and VS_FF_PRIVATEBUILD) <> 0 then Memo1.Lines.Add ('Private Build'); if (dwFileFlagsMask and dwFileFlags and VS_FF_SPECIALBUILD) <> 0 then Memo1.Lines.Add ('Special Build'); end;
// show some of the strings VerQueryValue(Pt, '\StringFileInfo\040904E4\FileDescription', Pt2, Size2); Memo1.Lines.Add ('File Description: ' + PChar (Pt2)); VerQueryValue(Pt, '\StringFileInfo\040904E4\FileVersion', Pt2, Size2); Memo1.Lines.Add ('File Version: ' + PChar (pt2)); VerQueryValue(Pt, '\StringFileInfo\040904E4\InternalName', Pt2, Size2); Memo1.Lines.Add ('Internal Name: ' + PChar (pt2)); VerQueryValue(Pt, '\StringFileInfo\040904E4\LegalCopyright', Pt2, Size2); Memo1.Lines.Add ('Legal Copyright: ' + PChar (pt2)); VerQueryValue(Pt, '\StringFileInfo\040904E4\ProductDescription', Pt2, Size2); Memo1.Lines.Add ('Product Name: ' + PChar (pt2)); VerQueryValue(Pt, '\StringFileInfo\040904E4\ProductVersion', Pt2, Size2); Memo1.Lines.Add ('Product Version: ' + PChar (pt2)); finally FreeMem (Pt); end; end; end;
|